/**
 * FireFly (2011)
 */
package com.firefly.kernel.spi.event;

/**
 * {@link IKernelEvent}核心事件触发接口
 * 
 * @version 1.0 2011-1-1
 * @author lexloo(lexloo@gmail.com)
 * @since FireFly 1.0
 */
public interface IKernelEventEmitter {
	/**
	 * 注册监听器
	 * 
	 * @param listener 监听器
	 * @param filter 过滤器
	 * @param handback 回调处理对象
	 */
	public void registerListener(IKernelEventListener listener, IKernelEventFilter filter, Object handback);

	/**
	 * 移除监听器
	 * 
	 * @param listener 监听器
	 * @param filter 过滤器
	 * @param handback 回调处理对象
	 */
	public void unregisterListener(IKernelEventListener listener, IKernelEventFilter filter, Object handback);

	/**
	 * 发出事件
	 * 
	 * @param event
	 *            事件
	 */
	public void fireKernelEvent(IKernelEvent event);
}
